#include <iostream>
#include <chrono>
#include <source_location>

using namespace std;

struct Log
{
	auto operator()(std::source_location loc = std::source_location::current())->Log&
	{
		std::cout << loc.function_name() << ":" << loc.line() << std::endl;
		return *this;
	}
};

void func()
{
	Log l;
	l();
}


int main()
{
	func();
	auto now = std::chrono::system_clock::now();
	std::cout << now << std::endl;
	auto nowTime = std::chrono::system_clock::to_time_t(now);
	std::cout << nowTime << std::endl;
	std::cout << "nanoseconds * 100:" << std::chrono::duration_cast<std::chrono::duration<long long, std::ratio<1, 10000000>>>(now.time_since_epoch()).count() << std::endl;
	std::cout << "nanoseconds:" << std::chrono::duration_cast<std::chrono::nanoseconds>(now.time_since_epoch()).count() << std::endl;
	std::cout << "microseconds:" << std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count() << std::endl;
	std::cout << "milliseconds:" << std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count() << std::endl;
	std::cout << "seconds:" << std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()).count() << std::endl;
	std::cout << "minutes:" << std::chrono::duration_cast<std::chrono::minutes>(now.time_since_epoch()).count() << std::endl;
	std::cout << "hours:" << std::chrono::duration_cast<std::chrono::hours>(now.time_since_epoch()).count() << std::endl;
	std::cout << "days:" << std::chrono::duration_cast<std::chrono::days>(now.time_since_epoch()).count() << std::endl;
	std::cout << "weeks:" << std::chrono::duration_cast<std::chrono::weeks>(now.time_since_epoch()).count() << std::endl;
	std::cout << "months:" << std::chrono::duration_cast<std::chrono::months>(now.time_since_epoch()).count() << std::endl;
	std::cout << "years:" << std::chrono::duration_cast<std::chrono::years>(now.time_since_epoch()).count() << std::endl;
	std::cout << std::chrono::system_clock::from_time_t(nowTime) << std::endl;
	auto timeMax = ULLONG_MAX / 10000000;
	std::cout << timeMax << std::endl;
	std::cout << std::chrono::system_clock::from_time_t(922300000000) << std::endl;
	std::cout << std::chrono::time_point<std::chrono::system_clock>{ std::chrono::duration<long long, std::ratio<1, 10000000>>{LLONG_MAX} } << std::endl;
	size_t i = 0;
	while (cin >> i)
		std::cout << std::chrono::system_clock::from_time_t(922300000000 + i * 10000000) << std::endl;

	return 0;
}